#ifndef __I3DCAMERASCENENODE_H__
#define __I3DCAMERASCENENODE_H__

#include "CTypes.h"
#include "ISceneNode.h"
#include "UsefulData.h"
#include "../include/IInputManager.h"

class I3DCameraSceneNode : public ISceneNode
{

public:
	I3DCameraSceneNode(ISceneNodeBasicParamsDeclaration):ISceneNode(ISceneNodeBasicParams)
	{
	}

	virtual ~I3DCameraSceneNode()		{}

	virtual void OnRender()						{}
	virtual vPos GetZNear()						= 0;
	virtual vPos GetZFar()						= 0;
	virtual vector3dvpos &GetLookAt()			= 0;
	virtual vPos GetLookAtX()					= 0;
	virtual vPos GetLookAtY()					= 0;
	virtual vPos GetLookAtZ()					= 0;
	virtual void SetLookAt(vector3dvpos &newla)	= 0;
	virtual void SetLookAtX(vPos newlax)		= 0;
	virtual void SetLookAtY(vPos newlay)		= 0;
	virtual void SetLookAtZ(vPos newlaz)		= 0;
	virtual vPos GetAngle()						= 0;
	virtual vector3dvpos &GetVUp()				= 0;
	virtual void SetVUp(vector3dvpos &newvup)	= 0;
	virtual vPos GetAspect()					= 0;
	virtual void SetAspect(vPos newAspect)		= 0;

	virtual void ActivateDebugMovementType1()	= 0;
	virtual void DeActivateDebugMovementType1()	= 0;
	virtual void ActivateDebugMovementType2()	= 0;
	virtual void DeActivateDebugMovementType2()	= 0;
	virtual void ActivateDebugMovementType3()	= 0;
	virtual void DeActivateDebugMovementType3()	= 0;

	virtual matrix3dvpos &GetProjectionMatrix()	= 0;

};

#endif
